#ifndef __settings_h__
#define __settings_h__

#define MAX_KEYS	32			//only hold 32 keys

#define CFG_END	0
#define CFG_U32	1
#define CFG_STR	2

typedef struct keyconfig_s
	{
	u32 internalcode;			//our internal code
	u32 scancode;				//os-mapped code
	} keyconfig_t;

class CSettings
	{
	public:
		char romdir[512];						//directory used for roms
		char statedir[512];					//state save directory
		char hidir[512];						//high score directory
		char nvramdir[512];					//nvram directory
		u32 dip[16];							//dip switches
		u32 dip_default[16];					//default dip settings
		u32 lockfps;							//lock framerate
		u32 startupstate;						//startup state (running or not)
		keyconfig_t keyconfig[MAX_KEYS];	//key configuration data
	public:
		CSettings();
		virtual ~CSettings();
		virtual int Load();						//load settings from file
		virtual int Save();						//save settings to file
		virtual void SetDefault();          //reset default settings
	};

#endif
